package chapter11;

import redis.clients.jedis.Jedis;

import java.util.List;

public class InvokeLua {
    /**
     * 主程序入口
     * 本程序演示了如何使用Jedis客户端与Redis服务器交互，执行Lua脚本
     *
     * @param args 命令行参数
     * @throws Exception 如果与Redis服务器的连接或执行脚本时发生错误
     */
    public static void main(String[] args) throws Exception {
        // 连接Redis服务器
        Jedis jedis = new Jedis("localhost");

        // 定义Lua脚本，该脚本将两个键分别设置为两个值，并返回第一个参数
        String script = "redis.call('set','k1',KEYS[1]);redis.call('set','k2',KEYS[2]);return ARGV[1];";

        // 执行Lua脚本，传递键值和参数
        // 这里使用eval命令执行脚本，keys参数指定脚本中使用的键，argv参数指定脚本中的参数
        String result = jedis.eval(script, List.of("v1", "v2"), List.of("arg1")).toString();

        // 输出执行结果 arg1
        System.out.println(result);
    }
}
